#ifndef VISENTECH_H
#define VISENTECH_H
#pragma once
#include <QObject>
#include <QThread>
#include "tools.h"
#include "VisionBooster.h"
#include "Halcon.h"
#include "halconcpp/HalconCpp.h"
using namespace HalconCpp;


#define CAPTURE_TIME_OUT 6000  // 获取点云超时

class Visentech : public QThread
{
    Q_OBJECT
public:
    explicit Visentech(QObject *parent = nullptr);
    ~Visentech();
    int Init();//初始化设备(默认路径安装）
    int InitPath(const char* install_path);//初始化设备（自定义路径安装）
    int Connect();//连接设备
    int Capture3DData();//获取点云
    void GeneratePointMap(); // 生成点云和图像对应关系点云图
    void StartAcquire();//采集点云
    void SaveColudPoints(QString filename="ObjectModel3D.om3");//保存点云
    void SaveImage(const char* filename,bool lLeft = true);//保存图像
    void Uninit();//关闭设备
    void CmaeraImageProcess(unsigned char* pImag,int width,int height,HObject Image,bool lLeft = true);//转换图像
private:
    void run();
    void GenObjectModel3D();//将点云数据转换成halcon变量，通道信号与槽功能的信号发射出去
signals:
    void send_ObjectModel3D(HTuple objectModel3D);//发送点云
    void send_ImageL(HObject Image);//发送左相机图像
    void send_ImageR(HObject Image);//发送右相机图像
private:
private:
   int Connect_result;
    bool stop_Thread;
    bool isStartAcquire;
    HTuple ObjectModel3D;
};

#endif // VISENTECH_H
